Network computing allows computers to request and receive software and file content from servers for installation and/or storage on the computers. File content may include, for example, text files, video files, data files, image files, etc. The software can be requested and downloaded for several purposes including updating system software, updating application software, and updating data files. For example, security patches may be downloaded for updating an operating system to prevent or counteract attacks on a computer system. Additionally, software can be downloaded for installing new applications on a computer. In one exemplary system, software can be downloaded in the background such that the software may be downloaded while a computer and computer user perform other tasks. One exemplary service with this functionality is the Background Intelligent Transfer Service (BITS).
Often, when software is published and available for download from a server, there are many computers on the network that attempt to obtain the software simultaneously or within a very short period of time. For example, when the software is a security patch, there is a desire to deliver the software to as many computers as possible in as short of time as possible to prevent malicious attacks on the computers or the network. When the software is a new application intended for system wide distribution in a corporate campus, there may be a desire to deploy the software system wide in a short period of time. When the software is a highly anticipated release, a large number of users may attempt to download the software in an effort to be among the first to use the software. To distribute the software on a large scale may require large amounts of server and network capacity. Such large scale downloads may be especially troublesome in a network environment where a number of branch offices connect to an enterprise hub at corporate headquarters. In this example, when software is distributed from the enterprise hub, the network connection between the enterprise hub and a branch office may limit the number of computers that can be updated at a particular time even when a server at the enterprise hub has sufficient capabilities for providing software to many or all of the computers at the branch office.
There are several methods that have been used to distribute the workload for large scale downloads. For example, in a corporate environment, deploying new software may be accomplished by only deploying the software to a limited number of computers on the network at a given time. Alternatively, caching proxies may be placed within the network to distribute the software to a subset of the computers on the network. Both of these solutions require careful planning to be implemented. In addition, in the case of caching proxies, additional computer hardware is added to the network increasing the cost of the network.
While various issues have been identified in this background, the subject matter claimed below does not necessarily address any or all of the identified issues. This background serves simply to provide background on one exemplary environment where the embodiments described herein may be practiced.